var utils = {};

// 时间实例化
utils.myDate = function(date) {
  if (date == null || date == undefined || date == 'null') {
    return '';
  }
  return new Date(date).Format('yyyy-MM-dd hh:mm:ss');
}
utils.myDate1 = function(date) {
  if (date == null || date == undefined || date == 'null') {
    return '';
  }
  return new Date(date).Format('yyyy-MM-dd');
}
Date.prototype.Format = function(fmt) { // author: meizz
  var o = {
    'M+': this.getMonth() + 1, // 月份
    'd+': this.getDate(), // 日
    'h+': this.getHours(), // 小时
    'm+': this.getMinutes(), // 分
    's+': this.getSeconds(), // 秒
    'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
    'S': this.getMilliseconds() // 毫秒
  };
  if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)); }
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))); }
  }
  return fmt;
};

// 时间戳转日期格式
utils.time = (time = +new Date()) => {
  var date = new Date(time + 8 * 3600 * 1000); // 增加8小时
  return date.toJSON().substr(0, 19).replace('T', ' ');
}

utils.setCookie = (cname, cvalue, exdays, path = '/') => {
  const date = new Date();
  date.setTime(date.getTime() + exdays * 24 * 60 * 60 * 1000);
  const expires = `expires=${date.toGMTString()}`;
  document.cookie = `${cname}=${cvalue}; ${expires}; path=${path}`;
  sessionStorage.setItem('token', `${cvalue}`);
}

// 获取cookie值
utils.getCookie = (objName) => {
  var arrStr = document.cookie.split('; ');
  for (var i = 0; i < arrStr.length; i++) {
    var temp = arrStr[i].split('=');
    if (temp[0] == objName) {
      return decodeURI(temp[1]);
    }
  }
}

// 获取url后面参数
utils.getQueryString = function(name) {
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return decodeURIComponent(r[2]);
  return null;
};

// 截取时间
utils.cutTime = function(str) {
  return str.substring(11, 16);
}

utils.setSession = function(key, value) {
  if (typeof value === 'string') {
	    sessionStorage.setItem(key, value);
  } else {
	    sessionStorage.setItem(key, JSON.stringify(value));
  }
},

utils.getSession = function(key, isObj) {
  var data = sessionStorage.getItem(key);
  if (isObj) { // 是否是对象
    return JSON.parse(data);
  } else {
    return data;
  }
},

utils.removeSession = function(key) {
  sessionStorage.removeItem(key);
}

/**
 * 对象拷贝
 * @method copyDeep
 * @param { object } obj 目标对象
 * @return { object } 拷贝后的对象
 */
utils.copyDeep = function(obj) {
  return JSON.parse(JSON.stringify(obj));
}

/**
 * 统一处理返回数据
 * 适用政审data按钮的数据.
 * @params colData   ---> 源数据
 * @params data   ---> 返回数据
 * @return 根据源数据提供的字段过滤之后的数组.
 */
utils.filterMatchData = function(colData, data) {
  const filterData = colData.map(item => {
    if (data[item.prop]) {
      return { ...item, value: data[item.prop] };
    }
    return { prop: '', label: item.label, value: '' };
  });
  return filterData.filter(item => item);
}

/**
 * 获取返回值列表
 * rows 数据
 * header 表格头数据
 * indexs 下标数组
 */
utils.getDataList = function(data) {
  var array = [];
  for (let i = 0; i < data.rows.length; i++) {
    const obj = {};
    for (let j = 0; j < data.header.length; j++) {
      if (j == 0) {
        obj[data.header[j].prop] = data.rows[i][data.header[j].prop] || '累计';
      } else {
        obj[data.header[j].prop] = data.rows[i][data.header[j].prop];
      }
      if (data.indexs && data.indexs.length) {
        if (data.indexs.indexOf(j) != -1) {
          obj[data.header[j].prop] = obj[data.header[j].prop] + '%';
        }
      }
    }
    array.push(obj);
  }
  return array;
}

/**
 * loading
 * show 显示
 * hide 隐藏
 */
utils.loadGif = {
  loading: '',
  loadingCount: 0,
  startLoading: () => {
    utils.loadGif.loading = vm.$loading({
      lock: true,
      text: '拼命加载中...',
      spinner: 'el-icon-loading',
      background: 'rgba(0, 0, 0, 0.9)',
	  customClass:"load-class"
    })
  },

  showLoading: () => {
	  if (utils.loadGif.loadingCount == 0) {
      utils.loadGif.startLoading();
	  }
	  utils.loadGif.loadingCount += 1;
  },

  hideLoading: () => {
    if (utils.loadGif.loadingCount <= 0) {
      return;
    }
    utils.loadGif.loadingCount -= 1;
    if (utils.loadGif.loadingCount === 0) {
      utils.loadGif.loading.close()
    }
  }
}

utils.typeToName = (type) => {
  var code = {
    '1': '除处理费用外，商家还同意消费者申请退货退款',
    '2': '除处理费用外，商家还愿意额外支付消费者补偿款',
    '3': '除处理费用外，商家还同意消费者不退货仅退款',
    '4': '其他'
  }
  return code[type] || ''
}

// 订单状态转换
utils.statusToName = (type) => {
  var code = {
    '1': '待支付',
    '2': '待处理',
    '3': '处理中',
    '4': '待确认',
    '5': '已完成',
    '6': '已撤单',
    '7': '已取消',
    '8': '已驳回',
    '9': '已退款',
    '10': '退款中',
    '11': '未解决',
    '13': '已撤回'
  }
  return code[type] || ''
}

export default utils
